package cl.gob.minvu.catastromobile;

import com.google.gson.Gson;

import cl.gob.minvu.catastromobile.entities.EvaluacionDanios;
import cl.gob.minvu.catastromobile.util.GenericUtil;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Spinner;

/**
 * @author psep
 *
 */
public class EvaluacionActivity extends AbstractActivity {

	private EvaluacionDanios evaluacionTO;
	private Spinner pilares;
	private Spinner cadenas;
	private Spinner vigas;
	private Spinner muros;
	private Spinner entrepiso;
	private Spinner techumbre;
	private Spinner ventanas;
	private Spinner puertas;
	private Spinner revestimientoPiso;
	private Spinner revestimientoMuro;
	private Spinner tabiques;
	private Spinner cieloRaso;
	private Spinner aguaPotable;
	private Spinner alcantarillado;
	private Spinner electricidad;
	private Spinner gas;
	private Spinner cierreAntejardin;
	private Spinner cierrePerimetral;
	private Spinner terreno;
	private Spinner accesos;
	private Spinner escaleras;
	private Spinner pasarelas;
	private Spinner taludes;
	private Spinner murosContencion;
	private Spinner redesSanitarias;
	private Spinner colectores;
	private Spinner postacionViaPublica;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_evaluacion);
		super.session = super.getSharedPreferences(GenericUtil.SESSION,
				MODE_PRIVATE);

		this.pilares = (Spinner) super.findViewById(R.id.spinnerEvaPilares);
		this.cadenas = (Spinner) super.findViewById(R.id.spinnerEvaCadenas);
		this.vigas = (Spinner) super.findViewById(R.id.spinnerEvaVigas);
		this.muros = (Spinner) super.findViewById(R.id.spinnerEvaMuros);
		this.entrepiso = (Spinner) super.findViewById(R.id.spinnerEvaEntrepiso);
		this.techumbre = (Spinner) super.findViewById(R.id.spinnerEvaTechumbre);
		this.ventanas = (Spinner) super.findViewById(R.id.spinnerEvaVentanas);
		this.puertas = (Spinner) super.findViewById(R.id.spinnerEvaPuertas);
		this.revestimientoPiso = (Spinner) super
				.findViewById(R.id.spinnerEvaRevPisos);
		this.revestimientoMuro = (Spinner) super
				.findViewById(R.id.spinnerEvaRevMuros);
		this.tabiques = (Spinner) super.findViewById(R.id.spinnerEvaTabiques);
		this.cieloRaso = (Spinner) super.findViewById(R.id.spinnerEvaCieloRaso);
		this.aguaPotable = (Spinner) super.findViewById(R.id.spinnerEvaAguas);
		this.alcantarillado = (Spinner) super
				.findViewById(R.id.spinnerEvaAlcantarillado);
		this.electricidad = (Spinner) super
				.findViewById(R.id.spinnerEvaElectricidad);
		this.gas = (Spinner) super.findViewById(R.id.spinnerEvaGas);
		this.cierreAntejardin = (Spinner) super
				.findViewById(R.id.spinnerEvaAntejardin);
		this.cierrePerimetral = (Spinner) super
				.findViewById(R.id.spinnerEvaPerimetrales);
		this.terreno = (Spinner) super.findViewById(R.id.spinnerEvaTerrenos);
		this.accesos = (Spinner) super.findViewById(R.id.spinnerEvaAccesos);
		this.escaleras = (Spinner) super.findViewById(R.id.spinnerEvaEscaleras);
		this.pasarelas = (Spinner) super.findViewById(R.id.spinnerEvaPasarelas);
		this.taludes = (Spinner) super.findViewById(R.id.spinnerEvaTaludes);
		this.murosContencion = (Spinner) super
				.findViewById(R.id.spinnerEvaContencion);
		this.redesSanitarias = (Spinner) super
				.findViewById(R.id.spinnerEvaSanitarias);
		this.colectores = (Spinner) super
				.findViewById(R.id.spinnerEvaColectores);
		this.postacionViaPublica = (Spinner) super
				.findViewById(R.id.spinnerEvaPostacion);
		this.onLoadSession();
	}

	/**
	 * Método que carga el objeto de sesión.
	 */
	private void onLoadSession() {
		String json = super.session.getString(GenericUtil.EVALUACION, null);

		if (json != null) {
			this.evaluacionTO = new Gson().fromJson(json,
					EvaluacionDanios.class);
			this.loadTextFrm();
		}
	}

	/**
	 * Método que registra el evento de onchange del combobox de Tipo de Daños
	 * para el llenado dinámico de la glosa.
	 */
	private void loadTextFrm() {
		if (this.evaluacionTO != null) {
			this.pilares.setSelection(this.evaluacionTO.pilares);
			this.cadenas.setSelection(this.evaluacionTO.cadenas);
			this.vigas.setSelection(this.evaluacionTO.vigas);
			this.muros.setSelection(this.evaluacionTO.muros);
			this.entrepiso.setSelection(this.evaluacionTO.entrepiso);
			this.techumbre.setSelection(this.evaluacionTO.techumbre);
			this.ventanas.setSelection(this.evaluacionTO.ventanas);
			this.puertas.setSelection(this.evaluacionTO.puertas);
			this.revestimientoPiso
					.setSelection(this.evaluacionTO.revestimientoPiso);
			this.revestimientoMuro
					.setSelection(this.evaluacionTO.revestimientoMuro);
			this.tabiques.setSelection(this.evaluacionTO.tabiques);
			this.cieloRaso.setSelection(this.evaluacionTO.cieloRaso);
			this.aguaPotable.setSelection(this.evaluacionTO.aguaPotable);
			this.alcantarillado.setSelection(this.evaluacionTO.alcantarillado);
			this.electricidad.setSelection(this.evaluacionTO.electricidad);
			this.gas.setSelection(this.evaluacionTO.gas);
			this.cierreAntejardin
					.setSelection(this.evaluacionTO.cierreAntejardin);
			this.cierrePerimetral
					.setSelection(this.evaluacionTO.cierrePerimetral);
			this.terreno.setSelection(this.evaluacionTO.terreno);
			this.accesos.setSelection(this.evaluacionTO.accesos);
			this.escaleras.setSelection(this.evaluacionTO.escaleras);
			this.pasarelas.setSelection(this.evaluacionTO.pasarelas);
			this.taludes.setSelection(this.evaluacionTO.taludes);
			this.murosContencion
					.setSelection(this.evaluacionTO.murosContencion);
			this.redesSanitarias
					.setSelection(this.evaluacionTO.redesSanitarias);
			this.colectores.setSelection(this.evaluacionTO.colectores);
			this.postacionViaPublica
					.setSelection(this.evaluacionTO.postacionViaPublica);
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.evaluacion, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();

		switch (id) {
		case R.id.evaluacion_frm_descartar:
			this.reset();
			return true;

		case R.id.evaluacion_frm_atras:
			super.go(FormActivity.class);
			finish();
			return true;

		default:
			return super.onOptionsItemSelected(item);
		}
	}

	/**
	 * Método que carga los datos del formulario hacía el objeto.
	 */
	private void setEvaluacionTO() {
		this.evaluacionTO = new EvaluacionDanios();
		this.evaluacionTO.pilares = super.getIdSpinner(this.pilares);
		this.evaluacionTO.cadenas = super.getIdSpinner(this.cadenas);
		this.evaluacionTO.vigas = super.getIdSpinner(this.vigas);
		this.evaluacionTO.muros = super.getIdSpinner(this.muros);
		this.evaluacionTO.entrepiso = super.getIdSpinner(this.entrepiso);
		this.evaluacionTO.techumbre = super.getIdSpinner(this.techumbre);
		this.evaluacionTO.ventanas = super.getIdSpinner(this.ventanas);
		this.evaluacionTO.puertas = super.getIdSpinner(this.puertas);
		this.evaluacionTO.revestimientoPiso = super
				.getIdSpinner(this.revestimientoPiso);
		this.evaluacionTO.revestimientoMuro = super
				.getIdSpinner(this.revestimientoMuro);
		this.evaluacionTO.tabiques = super.getIdSpinner(this.tabiques);
		this.evaluacionTO.cieloRaso = super.getIdSpinner(this.cieloRaso);
		this.evaluacionTO.aguaPotable = super.getIdSpinner(this.aguaPotable);
		this.evaluacionTO.alcantarillado = super
				.getIdSpinner(this.alcantarillado);
		this.evaluacionTO.electricidad = super.getIdSpinner(this.electricidad);
		this.evaluacionTO.gas = super.getIdSpinner(this.gas);
		this.evaluacionTO.cierreAntejardin = super
				.getIdSpinner(this.cierreAntejardin);
		this.evaluacionTO.cierrePerimetral = super
				.getIdSpinner(this.cierrePerimetral);
		this.evaluacionTO.terreno = super.getIdSpinner(this.terreno);
		this.evaluacionTO.accesos = super.getIdSpinner(this.accesos);
		this.evaluacionTO.escaleras = super.getIdSpinner(this.escaleras);
		this.evaluacionTO.pasarelas = super.getIdSpinner(this.pasarelas);
		this.evaluacionTO.taludes = super.getIdSpinner(this.taludes);
		this.evaluacionTO.murosContencion = super
				.getIdSpinner(this.murosContencion);
		this.evaluacionTO.redesSanitarias = super
				.getIdSpinner(this.redesSanitarias);
		this.evaluacionTO.colectores = super.getIdSpinner(this.colectores);
		this.evaluacionTO.postacionViaPublica = super
				.getIdSpinner(this.postacionViaPublica);
	}

	/**
	 * @param button
	 */
	public void onClickSaveEva(View button) {
		this.setEvaluacionTO();

		Editor edit = super.session.edit();
		edit.putString(GenericUtil.EVALUACION,
				new Gson().toJson(this.evaluacionTO));
		edit.commit();

		super.go(FormActivity.class);
		finish();
	}

	@Override
	public void reset() {
		this.evaluacionTO = null;
		Editor edit = super.session.edit();
		edit.remove(GenericUtil.EVALUACION);
		edit.commit();
		this.pilares.setSelection(0);
		this.cadenas.setSelection(0);
		this.vigas.setSelection(0);
		this.muros.setSelection(0);
		this.entrepiso.setSelection(0);
		this.techumbre.setSelection(0);
		this.ventanas.setSelection(0);
		this.puertas.setSelection(0);
		this.revestimientoPiso.setSelection(0);
		this.revestimientoMuro.setSelection(0);
		this.tabiques.setSelection(0);
		this.cieloRaso.setSelection(0);
		this.aguaPotable.setSelection(0);
		this.alcantarillado.setSelection(0);
		this.electricidad.setSelection(0);
		this.gas.setSelection(0);
		this.cierreAntejardin.setSelection(0);
		this.cierrePerimetral.setSelection(0);
		this.terreno.setSelection(0);
		this.accesos.setSelection(0);
		this.escaleras.setSelection(0);
		this.pasarelas.setSelection(0);
		this.taludes.setSelection(0);
		this.murosContencion.setSelection(0);
		this.redesSanitarias.setSelection(0);
		this.colectores.setSelection(0);
		this.postacionViaPublica.setSelection(0);
	}

	@Override
	public boolean validateFrm() {
		return false;
	}
}
